package com.wzdigit.wms.ws.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.wzdigit.framework.orm.model.BasicDomain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * <p>
 * 收货通知单信息
 * </p>
 *
 * @author 
 * @since 2021-01-12
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("WMS_ASN_HEADER")
@KeySequence(value = "WMS_ASN_HEADER_SEQ", clazz = Integer.class)
public class AsnHeader extends BasicDomain {

    private static final long serialVersionUID = 1L;

    /**
     * 收货通知单表头ID
     */
    @TableId(value = "ASN_HEADER_ID", type = IdType.INPUT)
    @ApiModelProperty(value = "收货通知单表头ID")
    private Integer asnHeaderId;

    /**
     * 收货通知单号
     */
    @TableField("ASN_NO")
    @ApiModelProperty(value = "收货通知单号")
    private String asnNo;

    /**
     * ASN 类型 － ASN 的单据类型，可区分不同操作类型、不同来源等的入库单据。系统
提供普通入库、生产收货、退货入库等多种类型，用户可根据需要在系统代码中增加类型。
     */
    @TableField("ASN_TYPE")
    @ApiModelProperty(value = "ASN 类型")
    private String asnType;


    /**
     * 优先级－订单作业优先级。常用于 RF 操作，任务队列排序中。紧急订单可排序在前。
     */
    @TableField("PRIORITY")
    @ApiModelProperty(value = "优先级")
    private Integer priority;

    /**
     * 货主，客户主数据中 客户类型=货主，取客户ID
     */
    @TableField("OWNER")
    @ApiModelProperty(value = "货主，客户主数据中 客户类型=货主，取客户ID")
    private Integer owner;

    /**
     * ASN创建时间
     */
    @TableField("ASN_CREATE_TIME")
    @ApiModelProperty(value = "ASN创建时间")
    private Date asnCreateTime;

    /**
     * 预期到货时间段：开始时间
     */
    @TableField("EXPECT_ARRIVE_TIME1")
    @ApiModelProperty(value = "预期到货时间段：开始时间")
    private Date expectArriveTime1;

    /**
     * 预期到货时间段：结束时间
     */
    @TableField("EXPECT_ARRIVE_TIME2")
    @ApiModelProperty(value = "预期到货时间段：结束时间")
    private Date expectArriveTime2;

    /**
     * erp工厂代码
     */
    @TableField("FACTORY")
    @ApiModelProperty(value = "erp工厂代码")
    private String factory;

    /**
     * 来源仓库
     */
    @TableField("FROM_WHS")
    @ApiModelProperty(value = "来源仓库")
    private Integer fromWhs;

    /**
     * 目的仓库
     */
    @TableField("TO_WHS")
    @ApiModelProperty(value = "目的仓库")
    private Integer toWhs;

    /**
     * 库存地点
     */
    @TableField("ZOON_GROUP_ID")
    @ApiModelProperty(value = "库存地点")
    private Integer zoonGroupId;

    /**
     * 供应商
     */
    @TableField("VENDOR_ID")
    @ApiModelProperty(value = "供应商")
    private Integer vendorId;

    /**
     * 销售订单，批次号
     */
    @TableField("PO_NO")
    @ApiModelProperty(value = "销售订单")
    private String poNo;

    /**
     * 数据来源
     */
    @TableField("DATA_SOURCE")
    @ApiModelProperty(value = "数据来源")
    private String dataSource;

    /**
     * 释放状态 －订单是否被释放。未释放 ASN 不具有收货资格。但可进行查看、编辑、打
印等操作。
     */
    @TableField("RELEASE_STATUS")
    @ApiModelProperty(value = "释放状态")
    private Integer releaseStatus;

    /**
     * 入库单打印标记－是否已打印入库任务清单

     */
    @TableField("ASN_PRINT_FLAG")
    @ApiModelProperty(value = "入库单打印标记")
    private Integer asnPrintFlag;

    /**
     * 质检状态 － ASN 进行质检操作的相关状态。系统提供 未创建质检单、质检单创建、
部分质检、全部质检、质检取消、质检关闭 状态项，根据对应质检单操作情况自动更新。新
增 ASN 默认为“未创建质检单”状态。
     */
    @TableField("QC_STATUS")
    @ApiModelProperty(value = "质检状态")
    private Integer qcStatus;

    /**
     * 序列号采集－此订单是否需要进行序列号操作。有时某个客户正常情况下需要进行序列
号采集，但临时有特殊单据的货物没有序列号可供扫描。可以通过此字段进行区别维护。

     */
    @TableField("SN_SCAN")
    @ApiModelProperty(value = "序列号采集")
    private Integer snScan;

    /**
     * 到货时间
     */
    @TableField("ACTUALARRIVETIME")
    @ApiModelProperty(value = "到货时间")
    private Date actualarrivetime;

    /**
     * 序列号采集－此订单是否需要进行序列号操作。有时某个客户正常情况下需要进行序列
号采集，但临时有特殊单据的货物没有序列号可供扫描。可以通过此字段进行区别维护。

     */
    @TableField("RCV_OVER_FLAG")
    @ApiModelProperty(value = "收货完成标识")
    private Integer rcvOverFlag;

    /**
     * 所运送产品的原产地所在国家。拉下列表内容在系统代码中配置。
     */
    @TableField("COUNTRY_OF_ORIGIN")
    @ApiModelProperty(value = "所运送产品的原产地所在国家")
    private Integer countryOfOrigin;

    /**
     * 所运送产品的目的地所在国家。拉下列表内容在系统代码中配置。
     */
    @TableField("COUNTRY_OF_DESTINATION")
    @ApiModelProperty(value = "所运送产品的目的地所在国家")
    private Integer countryOfDestination;

    /**
     * 装货地
     */
    @TableField("PLACE_OF_LOADING")
    @ApiModelProperty(value = "装货地")
    private String placeOfLoading;

    /**
     * 卸货地
     */
    @TableField("PLACE_OF_DISCHARGE")
    @ApiModelProperty(value = "卸货地")
    private String placeOfDischarge;

    /**
     * 交货地
     */
    @TableField("PLACE_OF_DELIVERY")
    @ApiModelProperty(value = "交货地")
    private String placeOfDelivery;

    /**
     * 车牌号
     */
    @TableField("DELIVERY_VEHICLE_NO")
    @ApiModelProperty(value = "车牌号")
    private String deliveryVehicleNo;

    /**
     * 车型
     */
    @TableField("DELIVERY_VEHICLE_TYPE")
    @ApiModelProperty(value = "车型")
    private String deliveryVehicleType;

    /**
     * 司机
     */
    @TableField("DRIVER")
    @ApiModelProperty(value = "司机")
    private String driver;

    /**
     * 承运人ID
     */
    @TableField("CARRIER_ID")
    @ApiModelProperty(value = "承运人ID")
    private String carrierId;

    /**
     * 承运人名称
     */
    @TableField("CARRIER_NAME")
    @ApiModelProperty(value = "承运人名称")
    private String carrierName;

    /**
     * 承运人地址
     */
    @TableField("CARRIER_ADDRESS")
    @ApiModelProperty(value = "承运人地址")
    private String carrierAddress;

    /**
     * 承运人联系人
     */
    @TableField("CARRIER_CONTACT")
    @ApiModelProperty(value = "承运人联系人")
    private String carrierContact;

    /**
     * 承运人电话
     */
    @TableField("CARRIER_TEL")
    @ApiModelProperty(value = "承运人电话")
    private String carrierTel;

    /**
     * 承运人电子邮件
     */
    @TableField("CARRIER_EMAIL")
    @ApiModelProperty(value = "承运人电子邮件")
    private String carrierEmail;

    /**
     * 承运人传真
     */
    @TableField("CARRIER_FAX")
    @ApiModelProperty(value = "承运人传真")
    private String carrierFax;

    /**
     * 收货月台
     */
    @TableField("DOOR")
    @ApiModelProperty(value = "收货月台")
    private String door;

    /**
     * 下单方ID
     */
    @TableField("ISSUE_PARTY_ID")
    @ApiModelProperty(value = "下单方ID")
    private String issuePartyId;

    /**
     * 下单方名称
     */
    @TableField("ISSUE_PARTY_NAME")
    @ApiModelProperty(value = "下单方名称")
    private String issuePartyName;

    /**
     * 下单方地址
     */
    @TableField("ISSUE_PARTY_ADDRESS")
    @ApiModelProperty(value = "下单方地址")
    private String issuePartyAddress;

    /**
     * 下单方联系人
     */
    @TableField("ISSUE_PARTY_CONTACT")
    @ApiModelProperty(value = "下单方联系人")
    private String issuePartyContact;

    /**
     * 下单方电话
     */
    @TableField("ISSUE_PARTY_TEL")
    @ApiModelProperty(value = "下单方电话")
    private String issuePartyTel;

    /**
     * 下单方电子邮件
     */
    @TableField("ISSUE_PARTY_EMAIL")
    @ApiModelProperty(value = "下单方电子邮件")
    private String issuePartyEmail;

    /**
     * 下单方传真
     */
    @TableField("ISSUE_PARTY_FAX")
    @ApiModelProperty(value = "下单方传真")
    private String issuePartyFax;

    /**
     * 业务担当
     */
    @TableField("FOLLOW_UP")
    @ApiModelProperty(value = "业务担当")
    private String followUp;

    /**
     * ASN参考信息1
     */
    @TableField("ASN_REF1")
    @ApiModelProperty(value = "ASN参考信息1")
    private String asnRef1;

    /**
     * ASN参考信息2
     */
    @TableField("ASN_REF2")
    @ApiModelProperty(value = "ASN参考信息2")
    private String asnRef2;

    /**
     * ASN参考信息3
     */
    @TableField("ASN_REF3")
    @ApiModelProperty(value = "ASN参考信息3")
    private String asnRef3;

    /**
     * ASN参考信息4
     */
    @TableField("ASN_REF4")
    @ApiModelProperty(value = "ASN参考信息4")
    private String asnRef4;

    /**
     * ASN参考信息5
     */
    @TableField("ASN_REF5")
    @ApiModelProperty(value = "ASN参考信息5")
    private String asnRef5;

    /**
     * 用户自定义字段1
     */
    @TableField("UDF1")
    @ApiModelProperty(value = "用户自定义字段1")
    private String udf1;

    /**
     * 用户自定义字段2
     */
    @TableField("UDF2")
    @ApiModelProperty(value = "用户自定义字段2")
    private String udf2;

    /**
     * 用户自定义字段3
     */
    @TableField("UDF3")
    @ApiModelProperty(value = "用户自定义字段3")
    private String udf3;

    /**
     * 用户自定义字段4
     */
    @TableField("UDF4")
    @ApiModelProperty(value = "用户自定义字段4")
    private String udf4;

    /**
     * 用户自定义字段5
     */
    @TableField("UDF5")
    @ApiModelProperty(value = "用户自定义字段5")
    private String udf5;

    /**
     * 备注
     */
    @TableField("COMMENTS")
    @ApiModelProperty(value = "备注")
    private String comments;

    /**
     * ASN 状态 － 该单证当前状态。系统提供 ASN 创建、已码盘、部分收货、完全收货、
订单取消、ASN 完成等状态。在创建一个新的 ASN 时，ASN 状态默认为 ASN 创建，系统
会根据 ASN 操作情况自动更新。
     */
    @TableField("STATUS")
    @ApiModelProperty(value = "ASN 状态")
    private Integer status;
    
    /*
     * 转出仓管员
     */
    @TableField("FM_BUSINESS_MAN")
    @ApiModelProperty(value = "转出仓管员")
    private String fmBusinessMan;

    /*
     * 目的仓管员
     */
    @TableField("TO_BUSINESS_MAN")
    @ApiModelProperty(value = "目的仓管员")
    private String toBusinessMan;
    
    /**
     * ERP移动类型
     */
    @TableField("ERP_MOVE_TYPE")
    private String erpMoveType;

    /**
     * 来源单号
     */
    @TableField("SOURCE_NO")
    private String sourceNo;

    /**
     * ASN创建人
     */
    @TableField("ASN_CREATE_USER")
    private String asnCreateUser;

    /**
     * 客户
     */
    @TableField("CUSTOMER_ID")
    private Integer customerId;

    /**
     * 审单人
     */
    @TableField("ASN_APPROVED_USER")
    private String asnApprovedUser;

    /**
     * 审核时间
     */
    @TableField("ASN_APPROVED_TIME")
    private Date asnApprovedTime;
}
